iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 19
0
自我挑戰組

資工的日常系列 第 19

CPE 考題 Jingle Composing

  • 分享至 

  • xImage
  •  

2017/05/23 CPE
題目:https://cpe.cse.nsysu.edu.tw/cpe/file/attendance/problemPdf/12195.pdf


大概題意:
就是計算節拍,一節音一拍,計算有幾組式對的並且印出。題目有給出每個英文代碼代表幾拍。EX:H為1/2,只有2個H則符合一拍。如果是HW,1+1/2則不為一拍。
input:
每組節拍都用"/"分隔,頭尾都有"/"。不會一開始就知道有幾組,讀到*代表結束。
output:
計算每組有幾個符合為1拍的組數。


import java.util.Scanner;

public class JingleComposing {
	public static void main(String[] args){
		char[] charSet={'W','H','Q','E','S','T','X'};
		//似乎要強制轉型才有效= =
		float[] during={1,(float)1/2,(float)1/4,(float)1/8,(float)1/16,(float)1/32,(float)1/64};
		String tmp;
		Scanner scanner=new Scanner(System.in);
		//一組case,如果不是"*"才能執行,順便讀取一行丟給tmp,再做後續的分析。
		while(!(tmp=scanner.nextLine()).equals("*")){
			//這case對的(=1拍)組數
			int setCount=0;
			//計算一組的for迴圈。split後,丟給for-each迴圈內的s。
            //s就是那些HH,QQQQ之類的東西了
			for(String s:tmp.split("/")){
				//計算是否為一拍,EX:1/2+1/2
				float floatCount=0;
				for(int i=0;i<s.length();i++){
					//一個一個比對,我用兩組陣列,
                    //找出對應的index後,再給另一個浮點數陣列
					for(int j=0;j<charSet.length;j++){
						if(s.charAt(i)==charSet[j]){
							floatCount+=during[j];
						}
					}
				}
				//確定為1拍,對的組數+1
				if(floatCount==1){
					setCount++;
				}
			}
			System.out.println(setCount);
		}
		scanner.close();
	}
}

測試資料:https://cpe.cse.nsysu.edu.tw/cpe/file/attendance/problemPdf/testData/uva12195a.php
https://ithelp.ithome.com.tw/upload/images/20180107/20107866exkaEYOmRz.png


上一篇
HTML Bootstrap 4 Grids RWD 響應式頁面 與一些BS3的差別
下一篇
C 常用的sorting bubble sort,insertion sort,selection sort
系列文
資工的日常30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言